package com.snow.java.base.junit;

import com.snow.java.base.entity.Student;

import java.util.function.Function;
import java.util.function.Supplier;

/**
 * @类名称：
 * @类描述：
 * @author: bingHeng
 * @Date 2019.04.05
 * @Version: 1.0
*/
public class MyLambad4 {

    /**
     *  构造器方法的引用
     *      语法格式： ClassName::new
     *      注意：需要调用的构造器的参数列表要与函数式接口中的抽象方法的参数列表保持一致
     *
     *  数组阴影
     *      语法格式：Type::new
     *
     */

    public static void main(String[] args) {

        // 常规Lambda表达式
        Supplier<Student> supplier = () -> new Student();
        Student student = supplier.get(); // 创建一个新的Sutdent对象
        System.out.println(student);

        // 构造器引用的方式，根据规则，此时调用的无参构造器
        Supplier<Student> supplier1 = Student::new;
        Student student1 = supplier1.get();
        System.out.println(student1);

        // 常规Lambda表达式
        Function<Integer, String[]> function = (x) -> new String[x];
        String[] apply = function.apply(10);
        System.out.println(apply.length);

        // 数组引用
        Function<Integer, String[]> function1 = String[]::new;
        String[] apply1 = function1.apply(10);
        System.out.println(apply1.length);

    }
}
